//
// Created by Administrator on 2024-5-11
// 高精度计算--乘法 高精度X高精度
// OJ: https://www.luogu.com.cn/problem/P1303 通过
// OJ: https://oj.youdao.com/problem/327?from=problems 通过
// OJ: http://ybt.ssoier.cn:8088/problem_show.php?pid=1307 通过
//

/*
 * https://www.bilibili.com/video/BV1dG411G7eb/?spm_id_from=333.337.search-card.all.click&vd_source=f69fe937b6744667b35fadd0fa06ddd2
 * http://t.csdnimg.cn/bFll9
in:
1234512345123456
6543265432654321
out:
8077741954031330769346516853376
 */

#include <iostream>

using namespace std;

int main()
{
    // x: 被乘数 y:乘数
    string x = "123", y = "13"; //01599 无进位
    x = "123", y = "14"; // 01722 有进位
//    x = "5555", y = "55"; // 305525
//    x = "99", y = "9"; // 891
//    cin >> x >> y;
    int len = x.size() + y.size();
    int ret[len] = {0};
    for (int i = x.size() - 1; i >= 0; --i)
    {
        for (int j = y.size()-1; j >= 0; --j)
        {
            int cur = (x[i] - '0') * (y[j] - '0');
//            int next = cur/10;
//            cur%=10;
            ret[i+j+1]+=cur;
//            ret[i+j]+=next;
        }
    }
    // 梳理进位
    for (int i = len-1; i >0; --i)
    {
        ret[i-1] = ret[i-1]+ret[i]/10;
        ret[i]%=10;
    }
    bool zero=(ret[0]==0);
    for (int i = 0; i < len; ++i)
    {
        if(ret[i]==0 && zero)
            continue;
        else
            zero=false;
        cout<<ret[i];
    }
    return 0;
}